package com.guoheng.hazard.sys.mapper.hazard;

import com.guoheng.hazard.sys.model.dto.hazard.MonitorSensorPageDTO;
import com.guoheng.hazard.sys.model.dto.hazard.SafeOneMapDataNumDTO;
import com.guoheng.hazard.sys.model.dto.hazard.SensorDataListDTO;
import com.guoheng.hazard.sys.model.dto.hazard.SensorDataRealTimeDTO;
import com.guoheng.hazard.sys.model.entity.hazard.InfluxdbSensorData;
import com.guoheng.hazard.sys.model.entity.hazard.MonitorSensor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 类功能描述:　MonitorSensorMapper
 *
 * @author Eternal
 * @date 2019-11-21 10:54
 */
@Mapper
public interface MonitorSensorMapper {
    int deleteByPrimaryKey(Long id);

    int insert(MonitorSensor record);

    int insertSelective(MonitorSensor record);

    MonitorSensor selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(MonitorSensor record);

    int updateByPrimaryKey(MonitorSensor record);

    /**
     * 方法功能描述: 查询这个储罐上有什么传感器
     *
     * @param entprId   企业id
     * @param entprName 企业姓名
     * @param sensorNo  传感器编号
     * @return List<MonitorSensor>
     */
    List<MonitorSensorPageDTO> getMonitorSensors(@Param("entprId") Long entprId, @Param("entprName") String entprName, @Param("sensorNo") String sensorNo);

    /**
     * 方法功能描述: 查询这个储罐上有什么传感器
     *
     * @param entprId 企业id
     * @param partId  储罐id
     * @param id      传感器id
     * @return List<MonitorSensor>
     */
    List<MonitorSensor> getSensorByPartId(@Param("entprId") Long entprId, @Param("partId") Long partId, @Param("id") Long id);


    /**
     * 方法功能描述: 根据编号查询传感器经纬度
     *
     * @param entprId  企业id
     * @param sensorNo 传感器编号
     * @return MonitorSensor
     */
    MonitorSensor getLocationByNo(@Param("entprId") Long entprId, @Param("sensorNo") String sensorNo);

    /**
     * 方法功能描述: 传感器信息
     *
     * @param entprId    企业id
     * @param id         传感器id
     * @param sensorType 传感器类型
     * @return List<MonitorSensor>
     */
    List<MonitorSensor> getSensorByType(@Param("entprId") Long entprId, @Param("id") Long id, @Param("sensorType") Integer sensorType);

    /**
     * 方法功能描述: 查询重大危险源的传感器
     *
     * @param hazardId 重大危险源id
     * @return List<MonitorSensor>
     */
    List<MonitorSensor> getSensorByHazardId(@Param("hazardId") Long hazardId);

    /**
     * 方法功能描述: 查询传感器数量，按企业分类
     *
     * @param sensorType 传感器类型
     * @return List<SafeOneMapDataNumDTO>
     */
    List<SafeOneMapDataNumDTO> getSensorNum(@Param("sensorType") Integer sensorType);

    /**
     * 方法功能描述:  查询传感器列表
     *
     * @param entprName 企业名称
     * @param sensorNo  传感器编号
     * @param beginTime 开始时间
     * @param endTime   结束时间
     * @return List<SensorDataListDTO>
     */
    List<SensorDataListDTO> getSensorDataList(@Param("entprId") Long entprId, @Param("entprName") String entprName, @Param("sensorNo") String sensorNo, @Param("beginTime") String beginTime, @Param("endTime") String endTime);


    /**
     * 方法功能描述:  获取传感器实时数据
     *
     * @param sensorId 传感器id
     * @return List<SensorDataRealTimeDTO>
     */
    SensorDataRealTimeDTO getSensorDataRealTime(@Param("sensorId") Long sensorId);


    /**
     * 方法功能描述:  获取传感器数据列表
     *
     * @return  List<InfluxdbSensorData>
     */
    List<InfluxdbSensorData> getAllSensorData(@Param("id") Long id);


}